home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / Tools / ANIPLAY.209 / DRIVER / PSOUND / PSOUND.DOC next >
Encoding:
Text File  |  1998-06-14  |  12.9 KB  |  332 lines

  1. ******************************************************************************
  2. *                                                                            *
  3. *           P-SOUND   V x.yy              © Sébald Loïc 1997-1998                 *
  4. *                                                                            *
  5. ******************************************************************************
  6.  
  7. Coordonnées de l'auteur :     Sébald Loïc
  8.                           1 bis rue du stade
  9.                             30820 Caveirac
  10.                          tel : 04 66 63 40 16
  11.  
  12. Présentation :
  13. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  14.     La version complète comprend une carte à bracher sur le port // et un
  15.   programme PSOUND.PRG à installer dans le dossier AUTO.
  16.   
  17.   La carte est un convertisseur N/A dans sa version la plus simple. La qualité
  18.   de la restitution est équivalente à celle d'une SoundBlaster 8 Bits.
  19.   
  20.   
  21. Matériel requis :
  22. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  23.     Un Hadès 40/60 ( Pour les autres, il n'y a aucune utilité d'une telle 
  24.   carte ... ) et une paire d'enceintes amplifiées ou une chaine HIFI.
  25.   Le volume en sortie de la carte étant faible, il faut une amplification.
  26.  
  27. Utilisation :
  28. ¯¯¯¯¯¯¯¯¯¯¯¯¯
  29.     Pour l'utilisateur, il n'y a rien d'autre à faire que brancher la carte
  30.   et copier les fichiers PSOUND.PRG et PSOUND.INF dans le dossier AUTO 
  31.   ( L'ordre dans le dossier AUTO est sans importance, toutefois, si vous voulez
  32.   jouer un échantillon au boot, il vaut mieux les mettre dans les premiers. )
  33.  
  34.     Les programmes qui reconnaitront la présence du driver enverront les
  35.   données vers la sortie standard. ( Beaucoup plus rapide que par le YAMAHA et
  36.   de meilleure qualité.)
  37.   
  38.   La version complète ( Driver + carte ) est disponible pour 100FF .
  39.   Le driver seul est disponible pour 50FF. ( Frais de port inclus )
  40.  
  41.   Lisez le fichier PSOUND.INF pour choisir les sorties et options désirés.
  42.   
  43. Programmation :
  44. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  45.     Le driver rajoute plusieurs fonctions dans le XBIOS. Pour reconnaitre sa
  46.   présence, il suffit de vérifier que le Cookie "PSND" se trouve dans le 
  47.   Cookie Jar.
  48.   
  49.   La nouvelle fonction du XBIOS pouvant être modifiée dans le futur, il est
  50.   impératif de prendre sa valeur dans les 2 octets après "PSND" dans le
  51.   Cookie Jar. De cette manière, quel que soit le numéro de la fonction, vous
  52.   serez sûr de ne pas avoir à modifier vos programmes.
  53.  
  54.   En assembleur :
  55. '
  56. ' a0=adresse du Cookie "PSND"
  57. '
  58. '    move.w    4(a0),Xbios_vector    -> Xbios_vector contient maintenant
  59. '                                        Le numéro de fonction du P-Sound
  60. '                                        dans le XBIOS.
  61.  
  62.   Les 2 octets suivant sont:
  63.   bit 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
  64.       |_____________________| |_____________________|
  65.       
  66.        N° Version majeur         N° Version mineur
  67.   
  68.   Ex :        $02                       $3e
  69.               
  70.    le mot est $023e ( 574 en décimal ), la version est 2.62 
  71.        ($3e hexa = 62 décimal )
  72.   
  73.   Le vecteur XBIOS englobe les sous-fonctions suivantes :
  74.   
  75.  #1 Replay once          Joue un échantillon 8 bits NON signé
  76.  #2 Replay loop          Joue un échantillon en boucle 8 bits NON signé
  77.  #3 Replay frame         Joue une série d'échantillons 8 bits NON signé
  78.  #4 Stop replay          Arrête la reproduction sonore
  79.  #5 Convert_sm_8         Conversion d'un échantillon Stéréo en Mono 8 bits NON signé
  80.  #6 Change_preset        Permet de modifier à volonté la fréquence N°16
  81.  #7 Convert_sm_16        Conversion d'un échantillon Stéréo en Mono 16 bits signé
  82.  #8 Sign\Unsign          Signer ou Déssigner un échantillon 8 bits
  83.  #9 Resample_8_bits      Rééchantillonner un sample 8 bits NON signé
  84. #10 Intel/motorola       Passer du format intel au format motorola ( 16 bits )
  85. #11 Replay once          Joue un échantillon 16 bits signé
  86. #12 Replay loop          Joue un échantillon en boucle 16 bits signé
  87. #13 Replay frame         Joue une série d'échantillons 16 bits signé
  88. #14 Maximize_8_bits      Augmenter le volume au maximum sans distorsions sur 8 bits
  89. #15 Maximize_16_bits     Augmenter le volume au maximum sans distorsions sur 16 bits
  90. #16 Resample_16_bits     Rééchantillonner un sample 16 bits signé
  91. #Nb Filtre               Fonction de filtrage  ( non implémentée à ce jour )
  92.   
  93.  
  94.   Les paramètres sont passés par la pile comme tout autre fonction du XBIOS.
  95.   L'appel peut se faire en mode utilisateur ou superviseur
  96.                                                ¯¯¯¯¯¯¯¯¯¯¯
  97.   Les fonction qui prennent comme paramètre l'adresse d'un buffer permettent
  98.   d'avoir l'échantillon original d'un coté et l'échantillon modifié d'un autre.
  99.   ( Seule la fonction resample lorsque la taille d'arrivée est supérieure à la 
  100.   taille de départ nécessite une adresse de buffer distincte de l'adresse de 
  101.   l'échantillon.)
  102.   
  103.    D0 contient en retour un pointeur sur le nombre d'échantillons restant à
  104.   jouer. Le registre a0 contient au retour de la fonction un pointeur sur 
  105.   l'échantillon en cours de restitution. Ces paramètres de retour sont valables
  106.   pour toutes les fonctions de replay.
  107.   
  108.    Un petit example :
  109.    |
  110.    |
  111.    trap #14
  112.    lea  nb(sp),sp
  113.  
  114.       pour attendre la fin                  pour récupérer l'echantillon courant
  115.  
  116.    move.l d0,a1                              move.l (a0),a1
  117. wait_end                                     move.b (a1),dn   ; échantillon
  118.    tst.l (a1)                             oscilloscope...
  119.    bne   wait_end
  120.  
  121.  
  122. Liste des fonctions :
  123. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  124.  
  125. Replay once
  126.  
  127.     move.l      #sample_start,-(sp)          ; Adresse début du sample
  128.     move.l      #sample_end,-(sp)            ; Adresse fin du sample
  129.     move.w      #Frequence,-(sp)             ; Frequence du replay
  130.     move.w      #1,-(sp)                     ; Fonction #1
  131.     move.w      Xbios_vector,-(sp)           ; Vecteur du Xbios
  132.     trap        #14                          ; GO !
  133.     lea         14(sp),sp                    ; Corrige la pile
  134.     tst.l       d0                           ; -1 si erreur
  135.     bmi         error
  136.     move.l      d0,a1                        
  137.     |
  138.     |
  139.     tst.l       (a1)
  140.     beq         fin                          ; Plus d'échantillons à jouer...
  141.  
  142. Replay loop
  143.  
  144.     move.l      #sample_start,-(sp)          ; Adresse début du sample
  145.     move.l      #sample_end,-(sp)            ; Adresse fin du sample
  146.     move.w      #Frequence,-(sp)             ; Frequence du replay
  147.     move.w      #2,-(sp)                     ; Fonction #2
  148.     move.w      Xbios_vector,-(sp)           ; Vecteur du Xbios
  149.     trap        #14                          ; GO !
  150.     lea         14(sp),sp                    ; Corrige la pile
  151.     tst.l       d0                           ; -1 si erreur
  152.     bmi         error
  153.     move.l      d0,a1                        ; Adresse contenant le nombre
  154.                                              ; d'échantillons restants à 
  155.                                              ; Jouer
  156.  
  157.  Ceci peut servir pour une routine soundtrack ou toute application qui aurait
  158.  besoin d'un buffer tournant.
  159.  
  160. Replay_frame
  161.  
  162.     move.l      #frame_adress,-(sp)          ; Adresse du Frame
  163.     move.w      #Frequence,-(sp)             ; Une seule fréquence pour tous
  164.     move.w      #3,-(sp)                     ; Fonction #3
  165.     move.w      Xbios_vector,-(sp)           ; Vecteur du Xbios
  166.     trap        #14                          ; Appel du Xbios
  167.     lea         10(sp),sp                    ; Corrige la pile
  168.   
  169.   composition d'un frame :
  170.   
  171.  Adresse du frame   0 : Start 1 , End 1 , Nb ;  pointeur dans le frame
  172.                    12 : Start 2 , End 2 , Nb ;  par le driver.
  173.                    etc
  174.                       : ReStart , XXXXX , En
  175.  
  176.  Start x = adresse début d'un sample
  177.  End   x = adresse fin d'un sample
  178.  Nb      = Nombre de fois ou le sample est rejoué avant la position suivante
  179.  
  180.  En      = -1 Derniere position du frame
  181.  Restart = Position du rebouclage dans le frame ( multiple de 12 )
  182.  XXXX    = Non utilisé
  183.  
  184.  Ceci peut servir pour une routine soundtrack ou toute application qui aurait
  185.  besoin d'un double buffer tournant.
  186.  
  187.  
  188. Stop replay
  189.  
  190.     move.w      #4,-(sp)                     ; Fontion #4
  191.     move.w      Xbios_vector,-(sp)
  192.     trap        #14
  193.     addq.l      #4,sp
  194.   
  195.   Stoppe la reproduction sonore.
  196.  
  197. Convert_sm    8 bits non signé = #5        16 bits signé = #7
  198.  
  199.     move.l      #sample_start,-(sp)
  200.     move.l      #sample_end,-(sp)
  201.     move.l      #Buffer,-(sp)
  202.     move.w      #5 ou #7,-(sp)
  203.     move.w      Xbios_vector,-(sp)
  204.     trap        #14
  205.     lea         16(sp),sp
  206.  
  207.  L'adresse du Buffer peut être égale à celle du Sample_start, sinon
  208.  Le sample original n'est pas modifié. Le résultat sera stocké à l'adresse
  209.  du Buffer.
  210.  
  211. Change preset
  212.  
  213.     move.w      #Val,-(sp)
  214.     move.w    #6,-(sp)        ; fonction 6
  215.     move.w      Xbios_vector,-(sp)
  216.     trap        #14
  217.     addq.l      #6,sp
  218.  
  219.   Permet d'assigner une valeur personnelle à la fréquence N°16 des fréquences
  220.  disponibles
  221.  
  222.  Val est une donnée sur 2 octets :
  223.    octet 0 = Valeur du prédiviseur du Timer A
  224.    octet 1 = Valeur du divisviseur du Timer A
  225.  
  226.  La fréquence de base du MFP est 2457600 Hz
  227.  le prédivieurs peut avoir les valeurs : 1 pour une prédivision par  4
  228.                                          2                          10
  229.                                          3                          16
  230.                                          4                          50
  231.                                          5                          64
  232.                                          6                         100
  233.                                          7                         200
  234.  Ex : Pour une fréquence de 40960 Hz
  235.  
  236.  Val = $010f  ( Prédiviseur de 4, diviseur de 15 )  40960 = (2457600/4)/15
  237.  
  238. Sign/Unsign
  239.  
  240.     move.l      #sample_start,-(sp)
  241.     move.l      #sample_end,-(sp)
  242.     move.l      #Buffer,-(sp)
  243.     move.w      #8,-(sp)
  244.     move.w      Xbios_vector,-(sp)
  245.     trap        #14
  246.     lea         16(sp),sp
  247.  
  248.  Permet de signer/dessigner un sample 8 Bits MONO. Cette fonction est
  249.  réversible.
  250.  
  251. Resample        8 bits non signé = #9       16 bits signé = #16
  252.  
  253.     move.l      #sample_start,-(sp)
  254.     move.l      #sample_end,-(sp)
  255.     move.l      #Buffer,-(sp)
  256.     move.w      #freq_start,-(sp)
  257.     move.w      #freq_dest,-(sp)
  258.     move.w      #9 ou #16 ,-(sp)
  259.     move.w      Xbios_vector,-(sp)
  260.     trap        #14
  261.     lea         20(sp),sp
  262.  
  263.  Permet de changer la frequence de base d'un sample. Si la frequence de départ
  264.  est supérieure à la fréquence d'arrivée, l'adresse du Buffer peut etre
  265.  égale à celle du sample.
  266.  Si la frequence d'arrivée est supérieure à la fréquence de départ, l'adresse
  267.  du buffer NE DOIT PAS etre égale à celle du sample. Dans ce cas, il y a
  268.  interpolation linéaire des valeurs.
  269.  
  270. Little endian to motorola
  271.  
  272.     move.l    #sample_start,-(sp)
  273.     move.l    #sample_end,-(sp)
  274.     move.l    #buffer,-(sp)
  275.     move.w    #10,-(sp)
  276.     move.w    Xbios_vector,-(sp)
  277.     trap    #14
  278.     lea    16(sp),sp
  279.    
  280.    Comme pour signer/dessigner, cette fonction est réversible. Elle permet de
  281.  permuter les octets de poid fort avec les octets de poid faible.
  282.  Si vous le voulez, l'adresse du buffer peut être égale à celle du sample.
  283.  
  284.    Les fonction Replay 16 bits n'utilisent que des échantillons signés.
  285.  La conversion vers le format 8 bits se fait en temps réel si la sortie utiliée
  286.  est une sortie 8 bits ( Yamaha, port imprimante ou ST Replay 8 bits )
  287.  
  288. maximize Sample       8 bits non signé = #14      16 bits signé = #15
  289.  
  290.     move.l    #sample_start,-(sp)
  291.     move.l    #sample_end,-(sp)
  292.     move.l    #buffer,-(sp)
  293.     move.w    #14 ou #15 ,-(sp)
  294.     move.w    Xbios_vector,-(sp)
  295.     trap    #14
  296.     lea    16(sp),sp
  297.  
  298. Filtres
  299.  
  300.     Je verrais cela plus tard...
  301.     
  302.   Les  fréquences disponibles sont :
  303.  
  304.            0                     8192
  305.            1                     9600
  306.            2                    11170
  307.            3                    12288
  308.            4                    12538
  309.            5                    12800
  310.            6                    16384
  311.            7                    24576
  312.            8                    25600
  313.            9                    30720
  314.           10                    38400         Maxi pour le TT
  315.           11                    40960
  316.           12                    49152
  317.           13                    51200
  318.           14                    61440         Sans problème sur HADES 60
  319.           15                  Free preset     ( L'hades 60 plafonne vers 100 Ko/s
  320.                                                 et sous interruptions SVP ! )
  321.  
  322. Remerciements :
  323.  
  324.     Baranger Emmanuel         EB-MODEL, EB-SOUND
  325.     François Le Coat          EUREKA,POV
  326.     Guillaume Tello           M-PLAYER
  327.     Didier Méquignon          ANI PLAYER, SONDIGIT
  328.     Eric Reboux               START-IT,FIND-IT,VIEW-IT Etc...
  329.     Marc Gabard               MODALYSER, XCOMMAND, Etc ... ( Soutient moral, physique,
  330.                               financier, politique et d'autres encore ... )
  331.  
  332.